The present invention generally relates to the field of communication via data unit transmission. In a data unit communication, a stream of data symbols (e.g. bits or bytes) is divided by a sender into units, sent over an appropriate transmission network to a receiver, and the receiver reconstructs the data symbol stream on the basis of the received data units. Usually, this is performed in the context of a layering scheme, such as the OSI scheme, i.e. where a sending peer of a given protocol receives a data symbol stream from a higher layer, generates data units in accordance with the given protocol to which the sending peer adheres, and passes the generated data units to lower layers. On the receiving side, the receiving peer receives the data units from the lower layer, reconstructs the data symbol scheme, and passes the reconstructed data symbol stream to the higher layer. The concept of dividing a data symbol stream into data units and the concept of layering are well known in the art, such that a further explanation is not necessary here.
It is noted that such sub-divisions of data are referred to by a variety of names, such as packets, segments, frames, protocol data units, service data units, etc. In the context of the present specification and claims, the term “data unit” is used generically to relate to any such sub-division of data for the purpose of communication.
In order to allow the data unit receiver to reconstruct the data symbol stream, it is known to send the data units in an ordered sequence and to provide each data unit with a sequence position identifier, such that the receiver can arrange the received data units in the sequence determined by the sender. It is further known to provide gap detection and response procedures at a data unit receiver for monitoring the sequence position identifiers in received data units for detecting and responding to a gap among the received data units with respect to the ordered sequence. A gap detection mechanism e.g. known from TCP consists in checking whether a received data unit is next in sequence to the last data unit received correctly in-sequence, and if this is not the case, the response procedure consists in sending a so-called duplicate acknowledgement (DUPACK) for a last data unit that was received correctly in-sequence, as a type of feedback message to the data unit sender.
It is furthermore known to implement a corresponding gap response procedure at the data unit sender for responding to a gap that was reported by the data unit receiver. For example, in TCP the data unit sender counts the number of DUPACKs and performs a retransmission of the data unit associated with the gap (i.e. in the TCP case the data unit immediately following the data unit identified in the DUPACK). As can be seen, in the occurrence of a gap in the received data units with respect to said sequence is understood as an indication that the corresponding data unit has probably been lost or irreparably damaged in the course of the transmission from the sender to the receiver.
It is known that a gap in the received data unit with respect to said sequence is not necessarily due to a data unit loss, but may also be due to so-called data unit reordering. Reordering is a phenomenon in which a later sent data unit overtakes a previously sent data unit, e.g. because the previously sent data unit is excessively delayed in the network. As a consequence, it is possible that the data unit receiver will receive the missing data unit that caused the gap to be detected, without the data unit sender necessarily having had to retransmit the missing data unit. This is precisely the reason why in TCP the data unit sender waits the above-mentioned threshold number of DUPACKs before performing a retransmission.